import router from '@/router';
import axios from 'axios';
import { ElMessage } from 'element-plus';

// 根据当前环境选择适当的 baseURL
const getBaseURL = () => {
  const mode = import.meta.env.VITE_APP_MODE || 'development';

  switch (mode) {
    case 'mock':
      return 'https://mockapi.eolink.com/ljWHH72e5ff4e70540b569dca828c0d629c2c3eadf7a221';
    case 'production':
      return 'http://117.72.52.207:8091';
    case 'development':
    default:
      return '/api'; // 开发环境使用代理
  }
};

// 创建 Axios 实例，设置 baseURL 和默认配置
const instance = axios.create({
  baseURL: getBaseURL(),
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json;charset=UTF-8',
  }
});

// 响应拦截器
instance.interceptors.response.use(
  response => {
    // 处理文件流响应
    if (response.config.responseType === 'blob') {
      return response;
    }

    const { code, message, data } = response.data;

    if (code === 0 || code === 200 || code === '200') {
      return response.data;
    }

    // 非成功状态码统一弹出错误信息
    ElMessage.error(message || '服务异常');
    return Promise.reject(response.data);
  },
  error => {
    // 网络或服务器异常统一处理
    const errorMsg = error.response?.data?.message || error.message || '服务异常';
    ElMessage.error(errorMsg);

    // 例如 401 可跳转登录页面
    if (error.response?.status === 401) {
      router.push('/login');
    }

    return Promise.reject(error);
  }
);

export default instance;
